Перейти к основному содержимому

7.03. Отличия SVN от Git

Разработчику Архитектору Инженеру

Отличия SVN от Git

В некоторых случаях используется SVN (Apache Subversion), в отличие от Git, это централизованная система контроля версий, требующая установки сервера.

Доступ к SVN осуществляется через протоколы:

  • svn:// (собственный протокол);
  • http:// или https:// (через веб-сервер);
  • file:// (локальный доступ).

В SVN вся история хранится на сервере, и разработчики имеют только рабочую копию. Команды похожие, позволяют тоже скачать клон, получить свежие изменения и отправить изменения на сервер.

Отличия SVN от Git

Характеристика/командаSVNGit
АрхитектураЦентрализованнаяДецентрализованная
Полная историяНа сервереУ каждого разработчика
Работа офлайнНетДа
ВетвлениеМедленное (копируются папки)Быстрое (используются указатели на коммиты)
КонфликтыЧаще (блокировки файлов)Реже (слияние через коммиты)
Размер репозиторияОгромныйКомпактный (за счёт дельта-компрессии)
Клонирование репозиторияsvn checkout <URL>git clone <URL>
Обновление локальной копииsvn updategit pull (fetch + merge)
Отправка измененийsvn commitgit push
Добавление файлаsvn add <file>git add <file>
Удаление файлаsvn delete <file>git rm <file>
Фиксация измененийsvn commit -m "message"git commit -m "message"
Слияние ветокsvn merge <URL>git merge <branch>
Создание веткиsvn copy <URL>/trunk <URL>/branches/<name>git branch <name> + git push
Переключение веткиsvn switch <URL>/branches/<name>git checkout <branch>
Просмотр историиsvn loggit log
Отмена измененийsvn revert <file>git restore <file>
Метки (теги)svn copy <URL>/trunk <URL>/tags/v1.0git tag v1.0
Игнорирование файловsvn:ignore.gitignore
Конфликтыsvn resolvegit mergetool